package small.common.statistic.metric;

/**
 * 统计
 * @author jinzhou
 * @data 2023/4/7 10:03
 */
public interface Metric {

    /**
     * 添加通过数
     * @return
     */
    void addPass(int count);

    /**
     * 添加异常数
     * @param n
     */
    void addException(int count);

    /**
     * 获取总通过数
     * @return
     */
    long pass();

    /**
     * 获取总异常数
     * @return
     */
    long exception();

    /**
     * 获取窗口内的通过数
     * @param timeMillis
     * @return
     */
    long getWindowPass(long timeMillis);

    /**
     * 获取窗口内的异常数
     * @param timeMillis
     * @return
     */
    long getWindowException(long timeMillis);

    /**
     * 以秒为单位获取滑动窗口的长度。
     * @return
     */
    double getWindowIntervalInSec();

    /**
     * 上个窗口的通过数
     * @return
     */
    long previousWindowPass();
}
